package com.ruoyi.basebill.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.basebill.domain.WfzXczbsbentry;
import com.ruoyi.basebill.mapper.WfzXczbsbMapper;
import com.ruoyi.basebill.domain.WfzXczbsb;
import com.ruoyi.basebill.service.IWfzXczbsbService;

/**
 * 薪酬总表-当月社保数据Service业务层处理
 * 
 * @author lxl
 * @date 2023-01-12
 */
@Service
public class WfzXczbsbServiceImpl implements IWfzXczbsbService 
{
    @Autowired
    private WfzXczbsbMapper wfzXczbsbMapper;

    /**
     * 查询薪酬总表-当月社保数据
     * 
     * @param fid 薪酬总表-当月社保数据主键
     * @return 薪酬总表-当月社保数据
     */
    @Override
    public WfzXczbsb selectWfzXczbsbByFid(Long fid)
    {
        return wfzXczbsbMapper.selectWfzXczbsbByFid(fid);
    }

    /**
     * 查询薪酬总表-当月社保数据列表
     * 
     * @param wfzXczbsb 薪酬总表-当月社保数据
     * @return 薪酬总表-当月社保数据
     */
    @Override
    public List<WfzXczbsb> selectWfzXczbsbList(WfzXczbsb wfzXczbsb)
    {
        return wfzXczbsbMapper.selectWfzXczbsbList(wfzXczbsb);
    }

    /**
     * 新增薪酬总表-当月社保数据
     * 
     * @param wfzXczbsb 薪酬总表-当月社保数据
     * @return 结果
     */
    @Transactional
    @Override
    public int insertWfzXczbsb(WfzXczbsb wfzXczbsb)
    {
        int rows = wfzXczbsbMapper.insertWfzXczbsb(wfzXczbsb);
        insertWfzXczbsbentry(wfzXczbsb);
        return rows;
    }

    /**
     * 修改薪酬总表-当月社保数据
     * 
     * @param wfzXczbsb 薪酬总表-当月社保数据
     * @return 结果
     */
    @Transactional
    @Override
    public int updateWfzXczbsb(WfzXczbsb wfzXczbsb)
    {
        wfzXczbsbMapper.deleteWfzXczbsbentryByFparentid(wfzXczbsb.getFid());
        insertWfzXczbsbentry(wfzXczbsb);
        return wfzXczbsbMapper.updateWfzXczbsb(wfzXczbsb);
    }

    /**
     * 批量删除薪酬总表-当月社保数据
     * 
     * @param fids 需要删除的薪酬总表-当月社保数据主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteWfzXczbsbByFids(Long[] fids)
    {
        wfzXczbsbMapper.deleteWfzXczbsbentryByFparentids(fids);
        return wfzXczbsbMapper.deleteWfzXczbsbByFids(fids);
    }

    /**
     * 删除薪酬总表-当月社保数据信息
     * 
     * @param fid 薪酬总表-当月社保数据主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteWfzXczbsbByFid(Long fid)
    {
        wfzXczbsbMapper.deleteWfzXczbsbentryByFparentid(fid);
        return wfzXczbsbMapper.deleteWfzXczbsbByFid(fid);
    }

    /**
     * 新增薪酬总-当月社保数据分录信息
     * 
     * @param wfzXczbsb 薪酬总表-当月社保数据对象
     */
    public void insertWfzXczbsbentry(WfzXczbsb wfzXczbsb)
    {
        List<WfzXczbsbentry> wfzXczbsbentryList = wfzXczbsb.getWfzXczbsbentryList();
        Long fid = wfzXczbsb.getFid();
        if (StringUtils.isNotNull(wfzXczbsbentryList))
        {
            List<WfzXczbsbentry> list = new ArrayList<WfzXczbsbentry>();
            for (WfzXczbsbentry wfzXczbsbentry : wfzXczbsbentryList)
            {
                wfzXczbsbentry.setFparentid(fid);
                list.add(wfzXczbsbentry);
            }
            if (list.size() > 0)
            {
                wfzXczbsbMapper.batchWfzXczbsbentry(list);
            }
        }
    }

    /**
     * 批量审核薪酬总表
     *
     * @param fids 需要审核的薪酬总表主键
     * @return 结果
     */
    @Transactional
    @Override
    public int auditWfzXczbsbByFids(Long[] fids)
    {
        return wfzXczbsbMapper.auditWfzXczbsbByFids(fids);
    }

    /**
     * 批量反审核薪酬总表
     *
     * @param fids 需要反审核的薪酬总表主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deAuditWfzXczbsbByFids(Long[] fids)
    {
        return wfzXczbsbMapper.deAuditWfzXczbsbByFids(fids);
    }

    /**
     * 批量废弃薪酬总表
     *
     * @param fids 需要废弃的薪酬总表主键
     * @return 结果
     */
    @Transactional
    @Override
    public int disuseWfzXczbsbByFids(Long[] fids)
    {
        return wfzXczbsbMapper.disuseWfzXczbsbByFids(fids);
    }

    /**
     * 对单据状态进行改变
     * @param fids
     * @param fstate
     * @return
     */
    @Override
    public int operation(Long[] fids, String fstate) {

        return wfzXczbsbMapper.operation(fids,fstate);
    }
}
